package LeetCodeTest.PrimaryAlgorithmTest.String;

import java.lang.reflect.Array;
import java.util.Arrays;

public class IsAnagram {
    /**
     * 有效的字母异位词
     * 给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。
     * 注意：若 s 和 t 中每个字符出现的次数都相同，则称 s 和 t 互为字母异位词。
     *
     * 示例1:
     * 输入: s = "anagram", t = "nagaram"
     * 输出: true
     * 示例 2:
     * 输入: s = "rat", t = "car"
     * 输出: false
     *
     * 提示:1 <= s.length, t.length <= 5 * 104  s 和 t 仅包含小写字母
     *
     * 作者：力扣 (LeetCode)
     * 链接：https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn96us/
     * 来源：力扣（LeetCode）
     * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
     * @param args
     */
    public static void main(String[] args) {
        String s = "rat", t = "car";
        IsAnagram isAnagram = new IsAnagram();
        System.out.println(isAnagram.isAnagram(s,t));
    }

    /**
     * 思路：将s ，t转化成char数组，然后排序。然后循环比较
     * @param s 字符串
     * @param t 字符串
     * @return t 是否是 s 的字母异位词
     */
    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length()){
            return false;
        }else {
            char[] chars = s.toCharArray();
            char[] chars1 = t.toCharArray();
            Arrays.sort(chars);
            Arrays.sort(chars1);

            int i = 0;
            for (char temp : chars) {
                if (temp != chars1[i]){
                    return false;
                }
                i++;
            }
            return true;
        }
    }
}
